<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <style>
        
    </style>
</head>
<body>
    
</body>
<script>

    // 实例的方法：then，catch

    // const p = request("a");

    // then的第一个回调函数：处理成功
    // p.then(res=>{
    //     console.log(res);
    // })

    // then的第二个回调函数处理失败
    // p.then(res=>{
    //     console.log(res);
    // }, err=>{
    //     console.log(err);
    // })

    // catch处理失败
    // p.catch(err=>{
    //     console.log(err);
    // })

    
    // Promise类的方法：一般都是用来做批处理
    // 需求：三个请求，不规定顺序，同时拿到所有数据

    // const a = request("a");
    // const b = request("b");
    // const c = request("c");

    // all规定：必须所有子实例都成功，最终才会成功
    // all规定：必须所有子实例只要有一个失败，就是失败
    // Promise.all([c, b, a]).then(res=>{
    //     console.log(res)
    // },err=>{
    //     console.log(err)
    // })

    // race规定：以最先结束的一个子实例的状态作为最终状态，不管成功还是失败
    // Promise.race([a,b,c]).then(res=>{
    //     console.log(res);
    // }, err=>{
    //     console.log(err);
    // })




    function request(url){
        return new Promise((resolve, reject)=>{
            setTimeout(() => {
                resolve(url + "请求成功后的数据");
            }, Math.random()*1000);

            setTimeout(() => {
                reject(url + "请求失败后的数据");
            }, Math.random()*1000);
        })
    }
</script>
</html>